import App from './App'
import store from './store'
import webSocketManager from './utils/websocket.js'

import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'

// 引入全局TuniaoUI
import TuniaoUI from 'tuniao-ui'
Vue.use(TuniaoUI)

// 引入TuniaoUI提供的vuex简写方法
let vuexStore = require('@/store/$t.mixin.js')
Vue.mixin(vuexStore)

// 引入TuniaoUI对小程序分享的mixin封装
let mpShare = require('tuniao-ui/libs/mixin/mpShare.js')
Vue.mixin(mpShare)

// 将WebSocket管理器挂载到Vue原型上，方便全局访问
Vue.prototype.$webSocketManager = webSocketManager;

// #ifdef MP-WEIXIN
// 在微信小程序环境中，监听一些可能的退出点，尝试清理WebSocket连接
if (wx && wx.onAppHide) {
  wx.onAppHide(() => {
    console.log('微信小程序 - App Hide 事件触发');
    // 应用进入后台，可以考虑记录时间，如果超过一定时间再断开连接
    // 这里我们保持连接，让后端通过心跳超时判断用户是否真的离线
  });
}

// 监听网络状态变化
if (wx && wx.onNetworkStatusChange) {
  wx.onNetworkStatusChange((res) => {
    console.log('网络状态变化:', res);
    if (!res.isConnected && webSocketManager.isConnected) {
      // 网络断开时，主动断开WebSocket连接，发送下线状态
      webSocketManager.close();
    } else if (res.isConnected && !webSocketManager.isConnected) {
      // 网络恢复时，尝试重新连接WebSocket
      const userId = uni.getStorageSync('userId');
      if (userId) {
        webSocketManager.init({ userId });
      }
    }
  });
}
// #endif

const app = new Vue({
  store,
  ...App
})

app.$mount()